/*
 *******************************************************************************
 * @ProjectName 中国航信  DIT(国际运价前端管理系统)
 * @FileName	JdbcUtil.java
 * @package		com.travelsky.gds.fare.bamboo.engine.dao
 * @author		HuangFeng
 * @Date		2017年9月27日 下午5:08:49
 * @version		1.0
 * @Company		中国民航信息网络股份有限公司
 * @Copyright	Copyright (c) 2016
 * @description 
 *******************************************************************************
 */
package com.travelsky.server.jdbc;

import java.sql.Connection;
import java.sql.SQLException;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

/**
 * 数据库连接工具类 
 * 必须提供c3p0-copnfig.xml配置文件
 ******************************************
 * @author HuangFeng [2017年9月27日 下午5:08:49]
 * @version 1.0
 ******************************************
 */
public class JdbcUtil {
	
	/**
	 * 数据库连接池
	 */
	private static DataSource ds = new ComboPooledDataSource();

	/**
	 * 本地线程连接
	 */
	private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();

	/**
	 * 获取当前线程的连接
	 ******************************************
	 * @author HuangFeng [2017年9月27日 下午5:19:04]
	 * @version 1.0
	 ******************************************
	 * @return 连接对象
	 * @throws SQLException 异常
	 */
	public static Connection getConnection() throws SQLException {
		Connection con = tl.get();
		if (con == null || con.isClosed()){
			con = ds.getConnection();
			tl.set(con);
		}
		return con;
	}

	/**
	 * 释放Connection
	 ******************************************
	 * @author HuangFeng [2017年9月27日 下午5:24:09]
	 * @version 1.0
	 ******************************************
	 * @param connection 数据库连接
	 * @throws SQLException 异常
	 */
	public static void releaseConnection(Connection connection) throws SQLException {
		if (connection != null && !connection.isClosed()) {
			connection.close();
		}
		tl.set(null);
	}
}
